package com.weiwu.weiwustore.service;

import com.weiwu.weiwustore.entity.User;
import com.weiwu.weiwustore.pojo.SelectItem;
import com.weiwu.weiwustore.pojo.UserD;
import com.weiwu.weiwustore.pojo.UserP;

import java.util.List;
import java.util.Map;

/**
 * user的service层
 */
public interface UserService {
    /**
     * 查询user表的所有数据的行数
     * @return 行数
     */
    Integer findCount();

    /**
     * 根据邮箱获取User对象
     * @param principal 邮箱
     * @return user对象
     */
    User findUserByEmail(String principal);

    /**
     * 根据邮箱获取UserD对象
     * @param principal 邮箱
     * @return userD对象
     */
    UserD findUserDByEmail(String principal);


    /**
     * 根据条件查询符合条件的用户集合
     * @param map 参数map
     * @return 符合条件的用户集合
     */
    List<UserP> findUserPsByCondition(Map<String,Object> map);


    /**
     * 根据参数插入一条用户信息
     * @param map 参数map
     * @return 受影响的行数
     */
    Integer insertUser(Map<String,Object> map);

    /**
     * 更新用户信息
     * @param map 参数map
     * @return 受影响的行数
     */
    Integer updateUser(Map<String,Object> map);
    /**
     * 用户个人修改基本信息
     * @param map 参数map 用户名，电话，性别，密码，id
     * @return 受影响的行数
     */
    Integer accountupdate(Map<String, Object> map);

    /**
     * 重置用户密码为邮箱
     * @param map 用户id+加密后的密码
     * @return 受影响的行数
     */
    Integer updateUserPwd(Map<String,Object> map);


    /**
     * 根据id删除用户
     * @param id 用户id
     * @return 受影响的行数
     */
    Integer deleteUserById(Integer id);

    /**
     * 根据拥有的user对象包装成前端常用的UserP对象
     * @param user user对象
     * @return UserP对象
     */
    UserP singlePack(User user);

    List<SelectItem> getmaterialitembystoreid(Map<String, Object> map);
}
